Setting working directory
library(dplyr)
setwd("c:/Users/Ali/Desktop/Medical Examiner/")
read the dataset
medical_examiner <- read.csv("Medical_Examiner_Case_Archive.csv",encoding = "UTF-8")
medical_examiner
Selecting those varibles that are needed
medical_examiner_selected <- medical_examiner %>% select(Case.Number,Date.of.Incident,Date.of.Death,Age,Gender,Race,Latino,Manner.of.Death,Primary.Cause,Incident.Address,Incident.City,longitude,latitude,OBJECTID)
medical_examiner_selected
Select only completed cases
medical_examiner_selected_complete <- medical_examiner_selected[medical_examiner_selected %>% complete.cases(),]
medical_examiner_selected_complete
Cleaning data from outliers, any latitude and longitude > 3*standard deviation
#cleaning data from outliers, any latitude and longitude > 3*standard deviation
medical_examiner_selected_complete_rmoutlier <- medical_examiner_selected_complete %>% filter(longitude>mean(longitude)-3*sd(longitude) & latitude>mean(latitude)-3*sd(latitude) & longitude<mean(longitude)+3*sd(longitude) & latitude < mean(latitude)+3*(latitude))
medical_examiner_selected_complete_rmoutlier
Creating countour plot for Accident deaths
library("leaflet")
library("data.table")
library("sp")
library("rgdal")
# library("maptools")
library("KernSmooth")
plotdata <- medical_examiner_selected_complete_rmoutlier %>% filter(Manner.of.Death=='NATURAL')
kde <- bkde2D(cbind(plotdata$longitude,plotdata$latitude),bandwidth=c(0.002,0.002),gridsize = c(20,20))
Binning grid too coarse for current (small) bandwidth: consider increasing 'gridsize'
CL <- contourLines(kde$x1 , kde$x2 , kde$fhat)
## EXTRACT CONTOUR LINE LEVELS
LEVS <- as.factor(sapply(CL, `[[`, "level"))
NLEV <- length(levels(LEVS))
## CONVERT CONTOUR LINES TO POLYGONS
pgons <- lapply(1:length(CL), function(i)
Polygons(list(Polygon(cbind(CL[[i]]$x, CL[[i]]$y))), ID=i))
spgons = SpatialPolygons(pgons)
## Leaflet map with polygons
leaflet(spgons) %>% addTiles() %>%
addPolygons(color = heat.colors(NLEV, NULL)[LEVS])
## Leaflet map with points and polygons
## Note, this shows some problems with the KDE, in my opinion...
## For example there seems to be a hot spot at the intersection of Mayfield and
## Fillmore, but it's not getting picked up. Maybe a smaller bw is a good idea?
leaflet(spgons) %>% addTiles() %>%
addPolygons(color = heat.colors(NLEV, NULL)[LEVS]) %>%
addCircles(lng = plotdata$longitude, lat = plotdata$latitude,
radius = .5, opacity = .2, col = "blue")
Creating countour plot for homicide deaths
plotdata <- medical_examiner_selected_complete_rmoutlier %>% filter(Manner.of.Death=='HOMICIDE')
kde <- bkde2D(cbind(plotdata$longitude,plotdata$latitude),bandwidth=c(0.002,0.002),gridsize = c(20,20))
Binning grid too coarse for current (small) bandwidth: consider increasing 'gridsize'
CL <- contourLines(kde$x1 , kde$x2 , kde$fhat)
## EXTRACT CONTOUR LINE LEVELS
LEVS <- as.factor(sapply(CL, `[[`, "level"))
NLEV <- length(levels(LEVS))
## CONVERT CONTOUR LINES TO POLYGONS
pgons <- lapply(1:length(CL), function(i)
Polygons(list(Polygon(cbind(CL[[i]]$x, CL[[i]]$y))), ID=i))
spgons = SpatialPolygons(pgons)
## Leaflet map with polygons
leaflet(spgons) %>% addTiles() %>%
addPolygons(color = heat.colors(NLEV, NULL)[LEVS])
Creating countour plot for deaths by suicide
library(leaflet)
plotdata <- medical_examiner_selected_complete_rmoutlier %>% filter(Manner.of.Death=='SUICIDE')
kde <- bkde2D(cbind(plotdata$longitude,plotdata$latitude),bandwidth=c(0.002,0.002),gridsize = c(20,20))
Binning grid too coarse for current (small) bandwidth: consider increasing 'gridsize'
CL <- contourLines(kde$x1 , kde$x2 , kde$fhat)
## EXTRACT CONTOUR LINE LEVELS
LEVS <- as.factor(sapply(CL, `[[`, "level"))
NLEV <- length(levels(LEVS))
## CONVERT CONTOUR LINES TO POLYGONS
pgons <- lapply(1:length(CL), function(i)
Polygons(list(Polygon(cbind(CL[[i]]$x, CL[[i]]$y))), ID=i))
spgons = SpatialPolygons(pgons)
## Leaflet map with polygons
leaflet(spgons) %>% addTiles() %>%
addPolygons(color = heat.colors(NLEV, NULL)[LEVS])
LS0tDQp0aXRsZTogIk1lZGljYWwgZXhhbWluZXIgcmVwb3J0cy4gQ29vayBDb3VudHksIElsbGlub2lzIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KU2V0dGluZyB3b3JraW5nIGRpcmVjdG9yeQ0KYGBge3J9DQpsaWJyYXJ5KGRwbHlyKQ0Kc2V0d2QoImM6L1VzZXJzL0FsaS9EZXNrdG9wL01lZGljYWwgRXhhbWluZXIvIikNCmBgYA0KDQoNCnJlYWQgdGhlIGRhdGFzZXQNCmBgYHtyfQ0KbWVkaWNhbF9leGFtaW5lciA8LSByZWFkLmNzdigiTWVkaWNhbF9FeGFtaW5lcl9DYXNlX0FyY2hpdmUuY3N2IixlbmNvZGluZyA9ICJVVEYtOCIpDQptZWRpY2FsX2V4YW1pbmVyDQpgYGANCg0KU2VsZWN0aW5nIHRob3NlIHZhcmlibGVzIHRoYXQgYXJlIG5lZWRlZA0KYGBge3J9DQptZWRpY2FsX2V4YW1pbmVyX3NlbGVjdGVkIDwtIG1lZGljYWxfZXhhbWluZXIgJT4lIHNlbGVjdChDYXNlLk51bWJlcixEYXRlLm9mLkluY2lkZW50LERhdGUub2YuRGVhdGgsQWdlLEdlbmRlcixSYWNlLExhdGlubyxNYW5uZXIub2YuRGVhdGgsUHJpbWFyeS5DYXVzZSxJbmNpZGVudC5BZGRyZXNzLEluY2lkZW50LkNpdHksbG9uZ2l0dWRlLGxhdGl0dWRlLE9CSkVDVElEKQ0KbWVkaWNhbF9leGFtaW5lcl9zZWxlY3RlZA0KYGBgDQoNClNlbGVjdCBvbmx5IGNvbXBsZXRlZCBjYXNlcw0KYGBge3J9DQptZWRpY2FsX2V4YW1pbmVyX3NlbGVjdGVkX2NvbXBsZXRlIDwtIG1lZGljYWxfZXhhbWluZXJfc2VsZWN0ZWRbbWVkaWNhbF9leGFtaW5lcl9zZWxlY3RlZCAlPiUgY29tcGxldGUuY2FzZXMoKSxdDQptZWRpY2FsX2V4YW1pbmVyX3NlbGVjdGVkX2NvbXBsZXRlDQpgYGANCg0KQ2xlYW5pbmcgZGF0YSBmcm9tIG91dGxpZXJzLCBhbnkgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSA+IDMqc3RhbmRhcmQgZGV2aWF0aW9uIA0KYGBge3J9DQojY2xlYW5pbmcgZGF0YSBmcm9tIG91dGxpZXJzLCBhbnkgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSA+IDMqc3RhbmRhcmQgZGV2aWF0aW9uIA0KbWVkaWNhbF9leGFtaW5lcl9zZWxlY3RlZF9jb21wbGV0ZV9ybW91dGxpZXIgPC0gbWVkaWNhbF9leGFtaW5lcl9zZWxlY3RlZF9jb21wbGV0ZSAlPiUgZmlsdGVyKGxvbmdpdHVkZT5tZWFuKGxvbmdpdHVkZSktMypzZChsb25naXR1ZGUpICYgbGF0aXR1ZGU+bWVhbihsYXRpdHVkZSktMypzZChsYXRpdHVkZSkgJiBsb25naXR1ZGU8bWVhbihsb25naXR1ZGUpKzMqc2QobG9uZ2l0dWRlKSAmIGxhdGl0dWRlIDwgbWVhbihsYXRpdHVkZSkrMyoobGF0aXR1ZGUpKQ0KbWVkaWNhbF9leGFtaW5lcl9zZWxlY3RlZF9jb21wbGV0ZV9ybW91dGxpZXINCg0KYGBgDQoNCg0KDQpDcmVhdGluZyBjb3VudG91ciBwbG90IGZvciBBY2NpZGVudCBkZWF0aHMNCmBgYHtyfQ0KDQpsaWJyYXJ5KCJsZWFmbGV0IikNCmxpYnJhcnkoImRhdGEudGFibGUiKQ0KbGlicmFyeSgic3AiKQ0KbGlicmFyeSgicmdkYWwiKQ0KIyBsaWJyYXJ5KCJtYXB0b29scyIpDQpsaWJyYXJ5KCJLZXJuU21vb3RoIikNCg0KDQpwbG90ZGF0YSA8LSBtZWRpY2FsX2V4YW1pbmVyX3NlbGVjdGVkX2NvbXBsZXRlX3Jtb3V0bGllciAlPiUgZmlsdGVyKE1hbm5lci5vZi5EZWF0aD09J05BVFVSQUwnKQ0KDQoNCmtkZSA8LSBia2RlMkQoY2JpbmQocGxvdGRhdGEkbG9uZ2l0dWRlLHBsb3RkYXRhJGxhdGl0dWRlKSxiYW5kd2lkdGg9YygwLjAwMiwwLjAwMiksZ3JpZHNpemUgPSBjKDIwLDIwKSkNCkNMIDwtIGNvbnRvdXJMaW5lcyhrZGUkeDEgLCBrZGUkeDIgLCBrZGUkZmhhdCkNCg0KIyMgRVhUUkFDVCBDT05UT1VSIExJTkUgTEVWRUxTDQpMRVZTIDwtIGFzLmZhY3RvcihzYXBwbHkoQ0wsIGBbW2AsICJsZXZlbCIpKQ0KTkxFViA8LSBsZW5ndGgobGV2ZWxzKExFVlMpKQ0KDQojIyBDT05WRVJUIENPTlRPVVIgTElORVMgVE8gUE9MWUdPTlMNCnBnb25zIDwtIGxhcHBseSgxOmxlbmd0aChDTCksIGZ1bmN0aW9uKGkpDQogICAgUG9seWdvbnMobGlzdChQb2x5Z29uKGNiaW5kKENMW1tpXV0keCwgQ0xbW2ldXSR5KSkpLCBJRD1pKSkNCnNwZ29ucyA9IFNwYXRpYWxQb2x5Z29ucyhwZ29ucykNCg0KIyMgTGVhZmxldCBtYXAgd2l0aCBwb2x5Z29ucw0KbGVhZmxldChzcGdvbnMpICU+JSBhZGRUaWxlcygpICU+JSANCiAgICBhZGRQb2x5Z29ucyhjb2xvciA9IGhlYXQuY29sb3JzKE5MRVYsIE5VTEwpW0xFVlNdKQ0KYGBgDQoNCg0KYGBge3J9DQojIyBMZWFmbGV0IG1hcCB3aXRoIHBvaW50cyBhbmQgcG9seWdvbnMNCiMjIE5vdGUsIHRoaXMgc2hvd3Mgc29tZSBwcm9ibGVtcyB3aXRoIHRoZSBLREUsIGluIG15IG9waW5pb24uLi4NCiMjIEZvciBleGFtcGxlIHRoZXJlIHNlZW1zIHRvIGJlIGEgaG90IHNwb3QgYXQgdGhlIGludGVyc2VjdGlvbiBvZiBNYXlmaWVsZCBhbmQNCiMjIEZpbGxtb3JlLCBidXQgaXQncyBub3QgZ2V0dGluZyBwaWNrZWQgdXAuICBNYXliZSBhIHNtYWxsZXIgYncgaXMgYSBnb29kIGlkZWE/DQoNCmxlYWZsZXQoc3Bnb25zKSAlPiUgYWRkVGlsZXMoKSAlPiUNCiAgICBhZGRQb2x5Z29ucyhjb2xvciA9IGhlYXQuY29sb3JzKE5MRVYsIE5VTEwpW0xFVlNdKSAlPiUNCiAgICBhZGRDaXJjbGVzKGxuZyA9IHBsb3RkYXRhJGxvbmdpdHVkZSwgbGF0ID0gcGxvdGRhdGEkbGF0aXR1ZGUsDQogICAgICAgICAgICAgICByYWRpdXMgPSAuNSwgb3BhY2l0eSA9IC4yLCBjb2wgPSAiYmx1ZSIpDQpgYGANCg0KDQoNCg0KDQpDcmVhdGluZyBjb3VudG91ciBwbG90IGZvciBob21pY2lkZSBkZWF0aHMNCmBgYHtyfQ0KDQpwbG90ZGF0YSA8LSBtZWRpY2FsX2V4YW1pbmVyX3NlbGVjdGVkX2NvbXBsZXRlX3Jtb3V0bGllciAlPiUgZmlsdGVyKE1hbm5lci5vZi5EZWF0aD09J0hPTUlDSURFJykNCg0KDQprZGUgPC0gYmtkZTJEKGNiaW5kKHBsb3RkYXRhJGxvbmdpdHVkZSxwbG90ZGF0YSRsYXRpdHVkZSksYmFuZHdpZHRoPWMoMC4wMDIsMC4wMDIpLGdyaWRzaXplID0gYygyMCwyMCkpDQpDTCA8LSBjb250b3VyTGluZXMoa2RlJHgxICwga2RlJHgyICwga2RlJGZoYXQpDQoNCiMjIEVYVFJBQ1QgQ09OVE9VUiBMSU5FIExFVkVMUw0KTEVWUyA8LSBhcy5mYWN0b3Ioc2FwcGx5KENMLCBgW1tgLCAibGV2ZWwiKSkNCk5MRVYgPC0gbGVuZ3RoKGxldmVscyhMRVZTKSkNCg0KIyMgQ09OVkVSVCBDT05UT1VSIExJTkVTIFRPIFBPTFlHT05TDQpwZ29ucyA8LSBsYXBwbHkoMTpsZW5ndGgoQ0wpLCBmdW5jdGlvbihpKQ0KICAgIFBvbHlnb25zKGxpc3QoUG9seWdvbihjYmluZChDTFtbaV1dJHgsIENMW1tpXV0keSkpKSwgSUQ9aSkpDQpzcGdvbnMgPSBTcGF0aWFsUG9seWdvbnMocGdvbnMpDQoNCiMjIExlYWZsZXQgbWFwIHdpdGggcG9seWdvbnMNCmxlYWZsZXQoc3Bnb25zKSAlPiUgYWRkVGlsZXMoKSAlPiUgDQogICAgYWRkUG9seWdvbnMoY29sb3IgPSBoZWF0LmNvbG9ycyhOTEVWLCBOVUxMKVtMRVZTXSkNCg0KYGBgDQoNCkNyZWF0aW5nIGNvdW50b3VyIHBsb3QgZm9yIGRlYXRocyBieSBzdWljaWRlIA0KYGBge3J9DQpsaWJyYXJ5KGxlYWZsZXQpDQoNCnBsb3RkYXRhIDwtIG1lZGljYWxfZXhhbWluZXJfc2VsZWN0ZWRfY29tcGxldGVfcm1vdXRsaWVyICU+JSBmaWx0ZXIoTWFubmVyLm9mLkRlYXRoPT0nU1VJQ0lERScpDQoNCg0Ka2RlIDwtIGJrZGUyRChjYmluZChwbG90ZGF0YSRsb25naXR1ZGUscGxvdGRhdGEkbGF0aXR1ZGUpLGJhbmR3aWR0aD1jKDAuMDAyLDAuMDAyKSxncmlkc2l6ZSA9IGMoMjAsMjApKQ0KQ0wgPC0gY29udG91ckxpbmVzKGtkZSR4MSAsIGtkZSR4MiAsIGtkZSRmaGF0KQ0KDQojIyBFWFRSQUNUIENPTlRPVVIgTElORSBMRVZFTFMNCkxFVlMgPC0gYXMuZmFjdG9yKHNhcHBseShDTCwgYFtbYCwgImxldmVsIikpDQpOTEVWIDwtIGxlbmd0aChsZXZlbHMoTEVWUykpDQoNCiMjIENPTlZFUlQgQ09OVE9VUiBMSU5FUyBUTyBQT0xZR09OUw0KcGdvbnMgPC0gbGFwcGx5KDE6bGVuZ3RoKENMKSwgZnVuY3Rpb24oaSkNCiAgICBQb2x5Z29ucyhsaXN0KFBvbHlnb24oY2JpbmQoQ0xbW2ldXSR4LCBDTFtbaV1dJHkpKSksIElEPWkpKQ0Kc3Bnb25zID0gU3BhdGlhbFBvbHlnb25zKHBnb25zKQ0KDQojIyBMZWFmbGV0IG1hcCB3aXRoIHBvbHlnb25zDQpsZWFmbGV0KHNwZ29ucykgJT4lIGFkZFRpbGVzKCkgJT4lIA0KICAgIGFkZFBvbHlnb25zKGNvbG9yID0gaGVhdC5jb2xvcnMoTkxFViwgTlVMTClbTEVWU10pDQoNCmBgYA0KDQoNCg0KDQoNCg0K